Telegram Group & Telegram Channel
🧠 Хитрая задача по SQL: максимум без агрегатов?

У тебя есть таблица orders со следующими полями:


orders(id, customer_id, order_date, amount)


📌 Задача:
Для каждого клиента (`customer_id`) найти наиболее поздний заказ (по order_date`), **не используя `GROUP BY и `MAX()`**.

🔥 Уловка: DISTINCT ON, TOP 1 WITH TIES и RANK() нельзя — ты ограничен базовым SQL, работающим на большинстве СУБД.

💡 Подумай:
Как ты решишь эту задачу только с JOIN, WHERE и EXISTS?

📥 Ожидаемый результат:
```sql
customer_id | order_id | order_date | amount
------------|----------|------------|--------
1001 | 87 | 2024-12-01 | 320.00
1002 | 91 | 2024-12-05 | 175.00
...

```

🧩 Подсказка:
Можно использовать NOT EXISTS, чтобы выбрать заказы, у которых нет более новых у того же клиента.


SELECT o.*
FROM orders o
WHERE NOT EXISTS (
SELECT 1
FROM orders o2
WHERE o2.customer_id = o.customer_id
AND o2.order_date > o.order_date
)


📎 Такой приём полезен:
• Когда нельзя использовать оконные функции
• Когда ты работаешь на старых версиях СУБД
• Когда нужна универсальность между MySQL / Oracle / SQLite

#SQL #Задача #БазыДанных #DataEngineering #Оптимизация

@sqlhub



tg-me.com/sqlhub/1900
Create:
Last Update:

🧠 Хитрая задача по SQL: максимум без агрегатов?

У тебя есть таблица orders со следующими полями:


orders(id, customer_id, order_date, amount)


📌 Задача:
Для каждого клиента (`customer_id`) найти наиболее поздний заказ (по order_date`), **не используя `GROUP BY и `MAX()`**.

🔥 Уловка: DISTINCT ON, TOP 1 WITH TIES и RANK() нельзя — ты ограничен базовым SQL, работающим на большинстве СУБД.

💡 Подумай:
Как ты решишь эту задачу только с JOIN, WHERE и EXISTS?

📥 Ожидаемый результат:
```sql
customer_id | order_id | order_date | amount
------------|----------|------------|--------
1001 | 87 | 2024-12-01 | 320.00
1002 | 91 | 2024-12-05 | 175.00
...

```

🧩 Подсказка:
Можно использовать NOT EXISTS, чтобы выбрать заказы, у которых нет более новых у того же клиента.


SELECT o.*
FROM orders o
WHERE NOT EXISTS (
SELECT 1
FROM orders o2
WHERE o2.customer_id = o.customer_id
AND o2.order_date > o.order_date
)


📎 Такой приём полезен:
• Когда нельзя использовать оконные функции
• Когда ты работаешь на старых версиях СУБД
• Когда нужна универсальность между MySQL / Oracle / SQLite

#SQL #Задача #БазыДанных #DataEngineering #Оптимизация

@sqlhub

BY Data Science. SQL hub


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/sqlhub/1900

View MORE
Open in Telegram


Data Science SQL hub Telegram | DID YOU KNOW?

Date: |

How to Use Bitcoin?

n the U.S. people generally use Bitcoin as an alternative investment, helping diversify a portfolio apart from stocks and bonds. You can also use Bitcoin to make purchases, but the number of vendors that accept the cryptocurrency is still limited. Big companies that accept Bitcoin include Overstock, AT&T and Twitch. You may also find that some small local retailers or certain websites take Bitcoin, but you’ll have to do some digging. That said, PayPal has announced that it will enable cryptocurrency as a funding source for purchases this year, financing purchases by automatically converting crypto holdings to fiat currency for users. “They have 346 million users and they’re connected to 26 million merchants,” says Spencer Montgomery, founder of Uinta Crypto Consulting. “It’s huge.”

Data Science SQL hub from hk


Telegram Data Science. SQL hub
FROM USA